#include <stdio.h>
#include <errno.h>
#include <fcntl.h>


//						SysProg						//
//		Gratzer Florian & Wernbacher Florian		//
//						ITM 12						//
//				Version 1.5 - 04.05.2014			//


int main(int argc, char* argv[]) {
	
	if(argc != 3)
	{
		fprintf(stderr, "Fehler! Falsche Anzahl von Argumenten\n");
		return 1;
	}

	//source file
	char* source_path = argv[1];
	char* dest_path = argv[2];

	//open new file
	int dest_file = open(dest_path, O_WRONLY | O_CREAT | O_EXCL, 0666);
	if(dest_file < 0){
		fprintf(stderr, "File kann nicht erstellt werden - bereits vorhanden\n");
		return errno;
	}

	//open source file
	int source_file = open(source_path, O_RDONLY);
	if(source_file < 0){
		fprintf(stderr, "File kann nicht geoeffnet werden\n");
		return errno;
	}

	char buffer[2048];
	int number = -1;

	while((number = read(source_file, buffer, 2048))){
		if(number < 0){
			fprintf(stderr, "Kann nicht gelesen werden\n");
			close(source_file);
			close(dest_file);
			return 1;
		}

		else if (write(dest_file, buffer, number)< 0){
			fprintf(stderr, "Kann nicht geschrieben werden\n");
			close(source_file);
			close(dest_file);
			return 1;
		}
	}
	return 0;
}